Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

255
Visualizações
dos clases de Java que comparten muchos de sus métodos pero no tienen una relación "es un"

Estoy implementando dos clases que comparten muchos métodos, pero no puedo hacer que una herede de la otra porque no tiene sentido, así que opté por una interfaz compartida con todos los métodos compartidos. pero me di cuenta de que muchos métodos también tienen la misma implementación para ambas clases, por lo que mi pregunta sería ¿cómo puedo hacer que estos métodos "hereden" de un método predeterminado como métodos "super" en herencia?

una solución en la que estoy pensando es crear una clase principal para que mis dos clases puedan heredar de ella

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

La herencia debe usarse cuando necesite referirse a un ancestro común, no para 'compartir' código común. Usted dice que los dos objetos no tienen esta relación pero tienen un código común; el enfoque obvio es factorizar eso en su propia clase (o interfaz o lo que sea) y componer sus objetos:

No proporcionaste un ejemplo, así que inventaré uno:

 class CommonStuff { // common members here } class One { private final CommonStuff common; } class Two { private final CommonStuff common; }

No hay necesidad de herencia y su acoplamiento duro inherente (juego de palabras).

over 4 years ago · Santiago Trujillo Relatório

0

Sí, Abstract Class es el enfoque correcto para esto si tiene alguna implementación predeterminada para los métodos; de lo contrario, puede optar por la interface .

Escriba toda su lógica común en sus métodos de clase abstracta y haga que estos métodos sean abstract si desea que la subclase anule la implementación; de lo contrario, no necesita convertirlos en métodos abstractos.

over 4 years ago · Santiago Trujillo Relatório

0

Para ampliar mi comentario: desea usar la composición y el patrón decorador con delegación

Por ejemplo:

 public interface Foo { public void a(); public void b(); }
 // used as the inner class public class ConcreteFoo implements Foo { public void a() { // implementation for a } public void b() { // implementation for b } }
 public class MyContainerA implements Foo { private Foo innerFoo; public MyContainerA(Foo innerFoo) { this.innerFoo = innerFoo; } public void a() { // delegate the method call to the contained object innerFoo.a(); } public void b() { // delegate innerFoo.b(); } public void methodOnlyInContainerA() { } }
 public class MyContainerB implements Foo { private Foo innerFoo; public MyContainerB(Foo innerFoo) { this.innerFoo = innerFoo; } public void a() { innerFoo.a(); } public void b() { innerFoo.b(); } public void methodOnlyInContainerB() { } }

en otra parte:

 Foo foo = new ConcreteFoo(); // both guys below use the same inner class MyContainerA contA = new MyContainerA(foo); MyContainerB contB = new MyContainerB(foo);
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda